home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / CRESC / Harmony / randomize-harmony next >
Lisp/Scheme  |  1996-12-31  |  1KB  |  34 lines

  1. randomize-harmony seed how l-range h-range pattern
  2.  
  3. This function creates a chromatically-altered solo or chordal variant from a symbol-pattern. In music that adopts a diatonic tonality this function can be invaluable for making solo or chordal passages that add chromatic tension and instability. The how keyword provides for 'solo or 'mix forms, the latter mixing the original pattern with the chromatically-altered version. Chromatic alteration can be between l-range and h-range values in semitones.
  4.  
  5. (randomize-harmony 0.45 'solo -5 7 '(a b c d e f g))
  6. --> ((-2 a) (2 b) (4 c) (2 d) (2 e) (6 f) (-3 g))
  7.  
  8. (randomize-harmony 0.45 'mix -5 7 '(a b c d e f g))
  9. --> ((a -2 a) (b 2 b) (c 4 c) (d 2 d) (e 2 e) (f 6 f) (g -3 g))
  10.  
  11. Use with eval-shield for finer control over the incidence of chromatic alteration. Or, adopt the following technique: 
  12.  
  13. (setq mel (gen-variants 0.343 2 '(a b c d f g)))
  14. --> (a b c d f g c d b a g g b d b b d f)
  15.  
  16. (setq chromatic-mel 
  17.       (randomize-harmony 0.23 'solo -7 5 
  18.              (filter-delete '(b c d) mel)))
  19.                    
  20. --> ((-3 a) = = = (0 f) (2 g) = = = (-1 a) (-4 g) (5 g) 
  21. = = = = = (-3 f))
  22.  
  23. (setq preserve-mel
  24.       (filter-preserve mel '(b c d))) 
  25. --> (b c d c d b b d b b d)
  26.  
  27. (symbol-mix chromatic-mel 
  28.             (fill-rest chromatic-mel preserve-mel))
  29.  
  30. --> ((-3 a) b c d (0 f) (2 g) c d b (-1 a) (-4 g) (5 g) 
  31. b d b b d (-3 f))
  32.  
  33.  
  34.